iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0
AI & Data

雲端情人 - AI 愛系列 第 12

Day 12 她真的記得我說過的話 — AI 女友的長期記憶系統

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250905/20112100uaOCVOwz9y.png

✨ 為什麼要「記憶」?

如果 AI 女友每次聊天都「失憶」,那體驗就會斷層。
想像一下:
• 你昨天告訴她:「我今天加班到 11 點,超累」。
隔天她卻完全不記得,繼續聊無關緊要的話題。

這樣就不像真實的陪伴。
所以,今天我們要加上 簡易記憶系統,讓她能記住你講過的重要事情,並在之後的回覆裡自然帶入。

🗂️ 記憶資料表設計

我們用 SQLite + peewee 來存放記憶:

models_memory.py

from peewee import *
import os
from datetime import datetime

DB_PATH = os.getenv("MEMORY_DB", "memory.db")
db = SqliteDatabase(DB_PATH)

class BaseModel(Model):
class Meta:
database = db

class Memory(BaseModel):
id = AutoField()
user_id = CharField(index=True)
content = TextField() # 記下的訊息
created = DateTimeField(default=datetime.utcnow)

def init_memory_db():
db.connect(reuse_if_open=True)
db.create_tables([Memory], safe=True)

⚙️ 記憶儲存邏輯

我們不需要每一句話都存,只存「值得記的」:
• 喜好(我喜歡… / 我最愛…)
• 心情(我今天很累 / 我明天加班)
• 關鍵資訊(我討厭… / 我生日在…)

memory_utils.py

import re
from models_memory import Memory

def maybe_save_memory(user_id: str, text: str):
# 偵測可能需要記憶的句型
if re.search(r"(喜歡|最愛|今天|明天|加班|討厭|生日)", text):
Memory.create(user_id=user_id, content=text)
return True
return False

🤖 回覆時帶入記憶

在回覆前,把最近幾條「記憶」帶給 AI,讓她有上下文。

在 handle_message_async 裡面

from models_memory import Memory
from memory_utils import maybe_save_memory

Step 1) 嘗試儲存記憶

maybe_save_memory(chat_id, msg)

Step 2) 把最近 3 條記憶加到 Prompt

recent_memories = (
Memory.select()
.where(Memory.user_id == chat_id)
.order_by(Memory.created.desc())
.limit(3)
)
memory_texts = "\n".join([f"- {m.content}" for m in recent_memories])

system_prompt = f"""
你是一位 AI 女友,會結合使用者過去說過的話,讓回覆更貼心。
以下是他最近告訴你的事情:
{memory_texts if memory_texts else "(目前沒有特別的記憶)"}
"""

🧪 使用範例
1. 使用者:
「我最喜歡珍珠奶茶!」
→ ✅ 存進記憶。
2. 隔天,使用者:
「我下班好累。」
→ AI 回:
「辛苦了 💕 要不要我幫你點一杯珍珠奶茶?🥤」

這樣互動就更像真實的女友!

🎯 小結

今天我們幫 AI 女友加上了:
• 記憶資料表(SQLite / peewee)
• 自動儲存記憶(只抓取有價值的訊息)
• 對話帶入記憶(更有「陪伴感」)

🔮 下一步升級:
• 加上 記憶權重(重要 vs 瑣碎)
• 支援「忘掉」指令(ex:「忘掉我剛剛說的」)
• 引入 向量資料庫(如 Milvus / Weaviate),做長期語意記憶

https://ithelp.ithome.com.tw/upload/images/20250905/20112100f7USkgJqxd.png


上一篇
Day 11 的 her做我的小祕書 : 記事提醒
下一篇
Day 13 她會主動提起(記憶喚醒 & 情境觸發)
系列文
雲端情人 - AI 愛13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言